#Sofia Marques Silva


##EXERCCIOS AULA 3 


###Exerccio - Distncia entre cidades


#### 1

distancias<-matrix(,nrow=4,ncol=4)
rownames(distancias)<-c("Atenas","Madri","Paris","Estocolmo")
colnames(distancias)<-c("Atenas","Madri","Paris","Estocolmo")
upper.tri(distancias,diag=TRUE)
distancias[lower.tri(distancias)]<-c(3949,3000,3927,1273,3188,1827) 
distancias

#          Atenas Madri Paris Estocolmo
#Atenas        NA    NA    NA        NA
#Madri       3949    NA    NA        NA
#Paris       3000  1273    NA        NA
#Estocolmo   3927  3188  1827        NA


#### 2

?datasets 	#R base package
library(datasets)
eurodist




### Exerccio - Criao de um Dataframe 

#### 1

hamster<-seq(1:18)
hamster #para verificar

fentipo<-factor (c(rep("claro",9),rep("escuro",9)))
fentipo #para verificar

dieta<-factor(c(rep(c("dieta A","dieta B","dieta C"),times=2,each=3)))
dieta #para verificar

v.peso<-c(0.1,1.1,3.7,5.7,-1.2,-1.5,3.0,-0.4,0.6,1.5,-0.1,2.0,0.6,-3.0,-0.3,-0.2,0.3,1.5)
v.peso #para verificar

experimento<-data.frame(hamster,fentipo,dieta,v.peso)
experimento #para verificar


#### 2

resp<-round(tapply(v.peso,list(fentipo,dieta),mean),1)
resp
# resposta: 
#         dieta A   dieta B   dieta C
# claro      1.6       1.0       1.1
# escuro     1.1      -0.9       0.5





### Exerccio - Criando uma Matriz


#### 1 

matriz<-matrix(rnorm(15,10,3.6),3,5)


#### 2

colnames(matriz) <- paste("C", 1:5) 
rownames(matriz) <- paste("L",1:3)


#### 3

mediaC<-apply(matriz,2,mean)
varC<-apply(matriz,2,var)

mediaL<-apply(matriz,1,mean)
varL<-apply(matriz,1,mean)

media<-c(mediaC,mediaL)
variancia<-c(varC,varL)

Data.Frame.Total<-data.frame(media,variancia)
Data.Frame.Total #para verificar




### Exerccio - Lendo e Salvando seus dados

#### 1

vespas = read.table("vespas.csv", header=TRUE, sep=";")
# "sempre verifique a estrutura dos dados antes de continuar suas anlises" in Aula R-elampago.

class(vespas)	#data.frame
dim(vespas) 	#50 5
names(vespas)	# "Arvore"   "Figo"     "Vespas"   "Sementes" "Flores" 
str(vespas)		#'data.frame':   50 obs. of  5 variables:
			# $ Arvore  : Factor w/ 2 levels "A","B": 1 1 1 1 1 1 1 1 1 1 ...
			# $ Figo    : int  1 2 3 4 5 6 7 8 9 10 ...
 			# $ Vespas  : int  252 196 177 186 198 150 271 186 247 209 ...
			# $ Sementes: int  192 244 264 248 186 252 264 188 208 186 ...
			# $ Flores  : int  444 422 460 416 365 405 539 394 439 395 ...
head(vespas)


vespas$Figo<-as.character(vespas$Figo) #porque esta varivel nao  quantitativa. A numerao corresponde  nomeao dos Figos.


summary (vespas$Vespas)
summary (vespas$Sementes)
summary (vespas$Flores)


ArvoreA <- vespas[vespas$Arvore=="A",]
ArvoreA #para verificar


ArvoreA3<-ArvoreA[,c(3,4,5)] #ou ArvoreA3<-ArvoreA[,c("Vespas","Sementes","Flores")] para casos em que a planilha seja grande e, por isso
#seja mais difcil saber o nmero da coluna que se pretende salvar.
ArvoreA3 #para verificar

write.table(ArvoreA3,"ArvoreA.txt",sep="\t",row.names=FALSE)



### Exerccio - Classes de Objetos

#### 1

#como j carreguei o pacote "datasets", agora basta:

class(iris)
# "data.frame"

class (iris3)
# "array"


#### 2

?iris
str(iris)

setosa<-apply(iris[1:50,1:4],2,mean)
setosa
#Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
#       5.006        3.428        1.462        0.246

versicolor<-apply(iris[51:100,1:4],2,mean)
versicolor
#Sepal.Length  Sepal.Width Petal.Length  Petal.Width
#       5.936        2.770        4.260        1.326

virginica<-apply(iris[101:150,1:4],2,mean)
virginica
#Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
#       6.588        2.974        5.552        2.026

#ou como vi no forum (e finalmente entendi a funo aggregate!):
aggregate(iris[1:4],by=iris[5],FUN=mean)	#ou aggregate(iris[1:4],iris[5],mean)
#     Species Sepal.Length Sepal.Width Petal.Length Petal.Width
#1     setosa        5.006       3.428        1.462       0.246
#2 versicolor        5.936       2.770        4.260       1.326
#3  virginica        6.588       2.974        5.552       2.026


?iris3
str(iris3)

setosa3<-apply(iris3[,,1],2,mean)
setosa3
#Sepal L. Sepal W. Petal L. Petal W. 
#   5.006    3.428    1.462    0.246

versicolor3<-apply(iris3[,,2],2,mean)
versicolor3
#Sepal L. Sepal W. Petal L. Petal W. 
#   5.936    2.770    4.260    1.326

virginica3<-apply(iris3[,,3],2,mean)
virginica3
#Sepal L. Sepal W. Petal L. Petal W. 
#   6.588    2.974    5.552    2.026

#ou como vi no forum:
apply(iris3,c(2,3),FUN=mean)
#         Setosa Versicolor Virginica
#Sepal L.  5.006      5.936     6.588
#Sepal W.  3.428      2.770     2.974
#Petal L.  1.462      4.260     5.552
#Petal W.  0.246      1.326     2.026



#### 3

names(iris) #para verificar como esto os nomes escritos
nomesPT<-c("Comp.Sepala","Largura.Sepala","Comp.Petala","Largura.Petala","Espcie")
names(iris)<-nomesPT
head(iris) #para verificar



### Exerccio - Acrescentando Dados de Sntese 

#### 1

tab.eucalipto<-read.table("esaligna.txt", header=TRUE, sep=",")



#### 2

summary(tab.eucalipto)


#### 3 
tab.eucalipto$tronco.folha = tab.eucalipto$tronco+tab.eucalipto$folha
tab.eucalipto #para verificar


#### 4

#sendo que rea basal = pi*r^2
tab.eucalipto$area.basal=pi*((tab.eucalipto$dap/2)^2)
tab.eucalipto #para verificar



#### 5

ab.talhao<- aggregate(tab.eucalipto["area.basal"],tab.eucalipto["talhao"],sum)
ab.talhao
#  talhao area.basal
#1     16    561.167
#2     17   1098.089
#3     18    347.468
#4     22   1023.382
#5     23   1306.062
#6     32   1136.866


#### 6

aggregate(tab.eucalipto["area.basal"],tab.eucalipto["talhao"],mean)
#  talhao area.basal
#1     16   93.52783
#2     17  156.86982
#3     18  115.82267
#4     22  204.67633
#5     23  163.25777
#6     32  162.40940


#### 7

tab.eucalipto[tab.eucalipto$dap>10,]


#### 8

arq<-tab.eucalipto[tab.eucalipto$dap>10,]

write.table(arq,"arq.txt",sep="\t",row.names=FALSE)



#### FIM! #####